package com.yr.ryjk.expert.service;

import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;

import com.yr.ryjk.doctor.entity.FilterParam;
import com.yr.ryjk.expert.entity.DoctorExpert;
import com.yr.ryjk.expert.entity.ExpertType;

public interface IExpertService {
	/**
	 * 后台分页获取名医分类
	 * @param pageNo
	 * @param pageSize
	 * @param id
	 * @return
	 */
	Map<String, Object> getAll(int pageNo, int pageSize);
	
	/**
	 * 添加名医分类
	 * @param expertType
	 * @return
	 * @throws InvocationTargetException 
	 * @throws IllegalAccessException 
	 */
	Map<String, Object> addInfo(ExpertType expertType) throws IllegalAccessException, InvocationTargetException;
	
	/**
	 * 修改名医分类
	 * @param expertType
	 * @return
	 */
	void updateInfo(ExpertType expertType);
	
	/**
	 * 后台或app获取指定医生所属的所有分类接口(listOfDoctor)
	 * @param expertType
	 * @return
	 */
	Map<String, Object> getAllExpertTypeOfDoctor(String docId);	
	
	/**
	 * 后台为名医分类添加医生接口(fill)
	 * @param typeId
	 * @param docId
	 * @return
	 */
	Map<String, Object> addDoctorExpertInfo(DoctorExpert doctorExpert) throws IllegalAccessException, InvocationTargetException;
	
	/**
	 * 后台为指定医生删除所属分类接口(pop)
	 * @param typeId 
	 * @param docId
	 * @return
	 */
	Map<String, Object> deleteByDocId(String typeId, String docIds);
	
	/**
	 * app获取所有名医分类接口(listAll)
	 * @return
	 */
	List<ExpertType> getAllExpertType();
	
	/**
	 * app分页获取属于指定名医分类的医生接口(listOfType)
	 * @param pageNo
	 * @param pageSize
	 * @param typeId
	 * @param filterParam 
	 * @return
	 */
	Map<String, Object> getListOfType(int pageNo, int pageSize, String typeId,String token, FilterParam filterParam);
	
	/**
	 * 通过主键id获取数据
	 * @param id
	 * @return
	 */
	Map<String, Object> getInfoById(String id);

	/**
	 * 删除名医分类
	 * @param ids
	 */
	void deleteByType(String ids);
}